﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;

namespace Project_Proto
{
    
    public partial class ProtokollErstellungsFenster : Form
    {
        BerichtObjekt protokoll = new BerichtObjekt();
        int anzeigeTop = -1;
        List<String> lehrer = new List<string>();
        List<String> gruppen = new List<string>();
        Form1 form;
        public ProtokollErstellungsFenster(Form1 form)
        {
            InitializeComponent();
            this.form = form;
            gruppen = FileControl.listAvailableGroups();
            comboBox2.Items.AddRange(gruppen.ToArray());
            comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;
        }

        private void button1_Click(object sender, EventArgs e)
        {

            DataGridViewRow row = new DataGridViewRow();

            DataGridViewTextBoxCell cell1 = new DataGridViewTextBoxCell();
            row.Cells.Add(cell1);
            cell1.Value = 0;

            DataGridViewTextBoxCell cell2 = new DataGridViewTextBoxCell();
            row.Cells.Add(cell2);
            cell2.Value = "Bezeichnung";

            dataGridView1.Rows.Add(row);
            TagesordnungspunktObjekt top = new TagesordnungspunktObjekt();
            top.nummer = "0";
            top.bezeichnung = "Bezeichnung";
            protokoll.toObjList.Add(top);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedCells.Count > 0)
            {
                protokoll.toObjList.RemoveAt(dataGridView1.SelectedCells[0].RowIndex);
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedCells[0].RowIndex);
            }            
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
            dataGridView1.CurrentCell = dataGridView1.SelectedCells[0];
            dataGridView1.BeginEdit(true);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (anzeigeTop >= 0) 
            {
                ((TagesordnungspunktObjekt)protokoll.toObjList[anzeigeTop]).protokoll = textBox3.Text;
                ((TagesordnungspunktObjekt)protokoll.toObjList[anzeigeTop]).beschluss = textBox4.Text;
            }
            if (dataGridView1.SelectedCells[0].RowIndex < protokoll.toObjList.Count)
            {
                groupBox4.Enabled = true;
                showTOP(dataGridView1.SelectedCells[0].RowIndex);
            }
            
            
        }

        private void showTOP(int index)
        {
            groupBox4.Text = ((TagesordnungspunktObjekt)protokoll.toObjList[index]).nummer + " " + ((TagesordnungspunktObjekt)protokoll.toObjList[index]).bezeichnung;
            textBox3.Text = ((TagesordnungspunktObjekt)protokoll.toObjList[index]).protokoll;
            textBox4.Text = ((TagesordnungspunktObjekt)protokoll.toObjList[index]).beschluss;
            anzeigeTop = index;
        }

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                try
                {
                    ((TagesordnungspunktObjekt)protokoll.toObjList[e.RowIndex]).nummer = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
                    ((TagesordnungspunktObjekt)protokoll.toObjList[e.RowIndex]).bezeichnung = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                }
                catch (Exception)
                {
                }
            }
                
            
        }

        public void lehrerAnzeigen()
        {
            lehrer = FileControl.getLehrerForGroup(comboBox2.Text);
            comboBox3.Items.Clear();
            comboBox1.Items.Clear();
            checkedListBox1.Items.Clear();
            comboBox1.Items.AddRange(lehrer.ToArray());
            comboBox3.Items.AddRange(lehrer.ToArray());
            checkedListBox1.Items.AddRange(lehrer.ToArray());
        }

        private void button5_Click(object sender, EventArgs e)
        {
            befuelleProtokoll();
            ProtokollToPdf printer = new ProtokollToPdf(protokoll,FileControl.getFullPathFor(comboBox2.Text,dateTimePicker1.Value,protokoll.titel));
            foreach (TagesordnungspunktObjekt top in protokoll.toObjList)
            {
                top.gruppe = comboBox2.Text;
                top.datum = dateTimePicker1.Value;
                top.protokolltitel = protokoll.titel;
                FileControl.addTOP(top);
            }
            
           
        }

        private void befuelleProtokoll()
        {
            protokoll.titel = textBox1.Text;
            protokoll.gruppe = comboBox2.Text;
            protokoll.moderator = comboBox3.Text;
            protokoll.protokollant = comboBox1.Text;
            protokoll.datum = dateTimePicker1.Value;
            protokoll.anwesend = new string[checkedListBox1.CheckedItems.Count];
            checkedListBox1.CheckedItems.CopyTo(protokoll.anwesend, 0);

            char[] separators = {',', ';'};
            protokoll.externe = textBox5.Text.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            
            
            if (anzeigeTop >= 0)
            {
                ((TagesordnungspunktObjekt)protokoll.toObjList[anzeigeTop]).protokoll = textBox3.Text;
                ((TagesordnungspunktObjekt)protokoll.toObjList[anzeigeTop]).beschluss = textBox4.Text;
            }
        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            button6.Enabled = true;
            comboBox1.Enabled = true;
            comboBox3.Enabled = true;
            checkedListBox1.Enabled = true;
            lehrerAnzeigen();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            GruppenPopUp popup = new GruppenPopUp(comboBox2.Text, this);
            popup.Text = comboBox2.Text;
            popup.Show();
            popup.Focus();
        }

        private void ProtokollErstellungsFenster_FormClosed(object sender, FormClosedEventArgs e)
        {
            form.Visible = true;

        }

        

    }
}
